import { uploadImage } from '@/api/upload.js';

/**
 * 上传图片
 * @param {Array} tempFilePaths 临时文件路径数组
 * @returns {Promise<string>} 返回图片URL字符串，多个图片用逗号分隔
 */
export async function uploadImages(tempFilePaths) {
    try {
        console.log('开始上传图片, 路径数组:', tempFilePaths);
        
        // 过滤掉可能的无效路径
        const validPaths = tempFilePaths.filter(path => {
            if (!path || typeof path !== 'string') {
                console.warn('发现无效图片路径:', path);
                return false;
            }
            return true;
        });
        
        if (validPaths.length === 0) {
            console.error('没有有效的图片路径可以上传');
            throw new Error('没有有效的图片路径');
        }
        
        // 检查文件是否为图片类型(主要针对PC端)
        for (let i = 0; i < validPaths.length; i++) {
            const path = validPaths[i];
            
            // 仅在 PC 端进行额外检查
            // #ifdef H5
            try {
                // 创建一个临时的Image对象来验证是否为有效图片
                await new Promise((resolve, reject) => {
                    const img = new Image();
                    img.onload = () => resolve();
                    img.onerror = () => reject(new Error('无效的图片文件'));
                    img.src = path;
                    
                    // 设置超时
                    setTimeout(() => reject(new Error('图片验证超时')), 3000);
                });
            } catch (e) {
                console.error(`路径 ${path} 不是有效的图片:`, e);
                throw new Error('选择的文件不是有效的图片');
            }
            // #endif
        }
        
        const uploadPromises = validPaths.map(async (tempFilePath) => {
            try {
                console.log('上传单张图片:', tempFilePath);
                const res = await uploadImage(tempFilePath);
                console.log('单张图片上传响应：', res);
                
                if (res.code === 200) {
                    // 确保返回的是有效的URL字符串
                    const url = res.data?.url || res.data;
                    if (typeof url === 'string' && url.trim()) {
                        return url.trim();
                    }
                    throw new Error('无效的图片URL');
                }
                throw new Error('图片上传失败');
            } catch (err) {
                console.error('单张图片上传失败:', err);
                throw err;
            }
        });

        const urls = await Promise.all(uploadPromises);
        console.log('所有图片上传完成，URL数组：', urls);
        
        // 过滤掉空值并返回逗号分隔的字符串
        const validUrls = urls.filter(url => url && url.trim());
        console.log('有效的图片URL：', validUrls);
        
        return validUrls.join(',');
    } catch (error) {
        console.error('图片上传失败：', error);
        throw error;
    }
} 